顺子号:1,2,3,4,5或者9,0,1,2,3,4或者7,8,9,0,1之类的
工作中写的那个还有bug,晚上研究了下终于写出个没有bug的方法,分享下,如果看到这篇文章还有更好办法的欢迎交流,共同进步。
function checkShunzi(arr) {
arr = arr.sort();
if (arr.indexOf(0) != -1 && arr.indexOf(9) != -1) {
let arr0 = []; //0这边的数组比如[0,1,2,3,8,9]->[1,2,3]
let arr9 = []; //9这边的数组比如[0,1,2,3,7,8,9]->[7,8]
//只要arr0和arr9是顺子并且长度总和等于arr.length-2,或者arr9的长度等于arr.length-1那么数组arr就是顺子
for (let i = 0; i < arr.length - 2; i++) {
let j = i + 1;
if (arr[j] - arr[i] == 1) {
arr0.push(arr[j]);
} else {
break;
}
}
for (let i = arr.length - 1; i > -1; i--) {
let j = i - 1;
if (arr[i] - arr[j] == 1) {
arr9.unshift(arr[j]);
} else {
break;
}
}
return isShunNum(arr0) && isShunNum(arr9) && ((arr.length - 2 - arr0.length == arr9.length) || arr9.length == arr.length - 1); //arr0.length==arr.length-1,[0,1,2,3,4,5,6,7,8,9]的情况
}
function isShunNum(arr) {
return arr.every(function (item, index, arr) {
return 0 === index || (Number(item) + 10 - 1) % 10 == arr[index - 1];
})
}
return isShunNum(arr);
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。